Moose Flats - the Russian nesting doll of lakes

3

Lake Superior is the largest freshwater lake (by surface area) in the world. And its largest island is Isle Royale. And its largest lake is Lake Siskiwit. And its largest island is Ryan Island. Ryan Island's largest (seasonal) pond is called Moose Flats. And it contains an 'island' (or a protruding rock) called Moose Boulder. This makes for quite a set of geographical Russian Nesting Dolls, eh!?!

Not familiar with Russian Nesting Dolls? ... Here's a picture (provided by my friend Trena) to jog your memory. Each doll fits inside of the next size up.

Where do I come up with bits of trivia such as Moose Boulder?!? ... Well, I probably spend way too much time on the Internet, reading the junk my friends post. I learned about Moose Boulder from my friend Matt, who shared the following a few days ago:

I thought it was a cool topic and might be the basis for a nice interactive/drilldown map example.

The Data

I created a dataset containing "lower left" (ll_lat and ll_long) and "upper right" (ur_lat and ur_long) coordinate for the area I wanted to show in the map at each level. Proc SGmap determines the map zoom-level that will approximately cover the area between the points and fit it into the given screen/png-image space. I also included a lat/long coordinate to position a red 'x' on the map, to show the location of Moose Boulder (the original map used an arrow, but I prefer an 'x' as in 'x marks the spot!').

Here's the code I used to create my data:

data my_data;
x_lat=48.0088000; x_long=-88.7720000;
input description $ 1-14 ll_lat ll_long ur_lat ur_long;
datalines;
Lake Superior  46.3542 -92.9504 49.0539 -83.3559
Isle Royale      47.8147 -89.2564 48.2134 -88.4282
Lake Siskiwit   47.9724 -88.8769 48.0258 -88.7325
Ryan Island     48.0068 -88.7780 48.0123 -88.7658
;
run;

The Maps

Below is the code I used to plot the top-level map (Lake Superior). The first scatter statement draws the red 'x', and the second two scatter statements plot transparent (invisible) markers that force the displayed map to extend from the lower-left coordinate to the upper-right coordinate. I tried several different background maps, and decided to use the National Geographic World Map as the background (I liked that it was a simple map, and also included a label for 'Lake Superior'.)

proc sgmap plotdata=my_data (where=(description="Lake Superior")) noautolegend;
esrimap url="http://services.arcgisonline.com/arcgis/rest/services/NatGeo_World_Map";
scatter x=x_long y=x_lat / markerattrs=(symbol=X size=12pt color="red");
scatter x=ll_long y=ll_lat / transparency=1 tip=none;
scatter x=ur_long y=ur_lat / transparency=1 tip=none;
run;

Here's the map it produces. Notice that the titles provide the context - the map covers the area of Lake Superior and the red 'x' shows the area of interest.

The next map is Isle Royale. This time I use the Openstreetmap background map. I tried all the different maps available, and at this zoom level, I think this map shows Isle Royale the best.

proc sgmap plotdata=my_data (where=(description="Isle Royale")) noautolegend;
Openstreetmap;
scatter x=x_long y=x_lat / markerattrs=(symbol=X size=12pt color="red");
scatter x=ll_long y=ll_lat / transparency=1 tip=none;
scatter x=ur_long y=ur_lat / transparency=1 tip=none;
run;

The next drill down level is Lake Siskiwit. For this map, I thought the topo map background (showing lines of elevation, and other orienteering details) provided the best view of the area of interest. Labels are always hit-and-miss in tile-based background maps, but I was pleased that this map showed labels for both Lake Siskiwit and Ryan Island (the next drill down level).

proc sgmap plotdata=my_data (where=(description="Lake Siskiwit")) noautolegend;
esrimap url="http://services.arcgisonline.com/arcgis/rest/services/USA_Topo_Maps";
scatter x=x_long y=x_lat / markerattrs=(symbol=X size=12pt color="red");
scatter x=ll_long y=ll_lat / transparency=1 tip=none;
scatter x=ur_long y=ur_lat / transparency=1 tip=none;
run;

I used the World Imagery background map for Ryan Island (sometimes referred to as a 'satellite image' map).

proc sgmap plotdata=my_data (where=(description="Ryan Island")) noautolegend;
esrimap url="http://services.arcgisonline.com/arcgis/rest/services/World_Imagery";
scatter x=x_long y=x_lat / markerattrs=(symbol=X size=12pt color="red");
scatter x=ll_long y=ll_lat / transparency=1 tip=none;
scatter x=ur_long y=ur_lat / transparency=1 tip=none;
run;

The final levels of the drill down map sequence would (hypothetically) be Moose Flats and Moose Boulder. I did some Google searching to try to find maps or pictures of them, and found an article that purports to prove that they were just an urban legend or hoax. Well, humph! Their article certainly makes a compelling argument for proving it was a hoax (with lots of facts/names/etc) -- but how do we know their article isn't the hoax?!? As with any good urban legend, I'll leave that for you to decide! Perhaps a trip to Ryan Island is in your future, to investigate for yourself! 🙂

Drill Down

I claimed I was going to make this into a drill down map example, eh? I guess I better make-good on that promise ...

In Proc SGmap, you can use the url= option on the scatter statement to use the value of a variable as the drill down URL when users click the scatter markers. In my case, the scatter plot is one single 'x' marker, and I want the 'x' in each map to drill down to the next map in the sequence. But my maps are not on separate web pages with separate URLs - my SAS job to writes them all to a single file (a single web page). What can I do to allow users to 'jump' directly to each map on the page?

The answer is HTML anchors! I can insert a named HTML anchor before each map, and jump directly to the anchors. For example, here's the SAS code to insert an anchor for the Isle Royale map.

ods html anchor='Isle_Royale';

The name of my HTML file is moose_boulder.htm, and therefore moose_boulder.htm#Isle_Royale will jump to that anchor on the page. If I'm already viewing the moose_boulder.htm web page, then #Isle_Royale (a 'relative path' to the current page) will jump to the anchor on the current page. Here's the code I used to set up the variable in my dataset with the drill down URLs. At the final level, I have the drill down go to the interactive Google map zoomed into the 'x' location.

data my_data; set my_data;
length drillurl $150;
label drillurl='Drill to';
if description='Lake Superior' then drillurl='#Isle_Royale';
if description='Isle Royale' then drillurl='#Lake_Siskiwit';
if description='Lake Siskiwit' then drillurl='#Ryan_Island';
if description='Ryan Island' then drillurl="https://www.google.com/maps/place/48%C2%B000'31.7%22N+88%C2%B046'19.2%22W/@48.0088056,-88.7741887,17z/data=!3m1!4b1!4m5!3m4!1s0x0:0x0!8m2!3d48.0088056!4d-88.772";
run;

The above code creates the drillurl variable, and the following code shows how I specify that drillurl variable in my scatter plot's url= option:

scatter x=x_long y=x_lat / markerattrs=(symbol=X size=12pt color="red") url=drillurl;

Here's a link to the full interactive example, if you'd like to give it a try. As you're viewing the maps, click the red 'x' to drill down to the next drill down level of map. (And for those of you who are SAS programmers, here's a link to the full code.)

Summary

You now know a little more about geography, an interesting island, and some SAS tricks for creating cool maps. Specifically:

  • The (hypothetical) location of Moose Boulder
  • Displaying the desired area of a map, by plotting invisible markers in the lower-left and upper-right corners
  • Choosing different background maps, to get the look you want
  • Setting up drill down variables in your SAS job
  • And using HTML anchors to jump to a specific location on a Web page

 

Tags fun SGMAP
Share

About Author

Robert Allison

The Graph Guy!

Robert has worked at SAS for over a quarter century, and his specialty is customizing graphs and maps - adding those little extra touches that help them answer your questions at a glance. His educational background is in Computer Science, and he holds a BS, MS, and PhD from NC State University.

3 Comments

  1. For a bit of trivia on Isle Royal, author Nevada Barr wrote a mystery "A Superior Death" which takes place there. I enjoyed the book.

Back to Top